// src/stores/auth.js (修改后的版本)
import { defineStore } from 'pinia'
import axios from 'axios'

export const useAuthStore = defineStore('auth', {
  state: () => ({
    user: null,
    isLoggedIn: false,
  }),

  getters: {
    userId: (state) => (state.user ? state.user.id : null),
    isAuthenticated: (state) => state.isLoggedIn,
  },

  actions: {
    loginSuccess(userData) {
      this.user = userData.user || userData // 假设 userData.user 才是用户对象
      this.isLoggedIn = true

      // **【修复点 1】: 将用户数据保存到 localStorage**
      // 注意：这里需要确保保存的是包含 id 的用户对象
      localStorage.setItem('papercut_user', JSON.stringify(this.user))

      // 可选：在这里设置全局的 axios header
      // ...
    },

    logout() {
      this.user = null
      this.isLoggedIn = false

      // **【修复点 2】: 移除本地存储**
      localStorage.removeItem('papercut_user')
    },

    initialize() {
      const storedUser = localStorage.getItem('papercut_user')
      if (storedUser) {
        // 【注意】这里直接调用 this.loginSuccess(JSON.parse(storedUser))
        // 可能会导致循环，因为 loginSuccess 又会写回 localStorage。
        // 最安全的方式是直接更新状态，因为数据来自已存储的 JSON。
        const userObj = JSON.parse(storedUser)
        this.user = userObj
        this.isLoggedIn = true
        // 确保在页面刷新后，Store 中的状态被正确恢复
      }
    },
  },
})
